package cn.edu.gdpt.mobile0123456789hwh0410;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

//2、适配器继承RecyclerView.Adapter，并设置泛型为刚定义的Viewolder。
public class StudentRVAdapter extends RecyclerView.Adapter<StudentRVAdapter.ViewHolder> {
//    4、定义数据接口，并在构造方法中赋值
    private List<Student> list;

    public StudentRVAdapter(List<Student> list) {
        this.list = list;
    }

    //    1、首先定义一个内部静态类ViewHolder，继承RecyclerView.ViewHolder，
//    声明列表项目布局文件的控件为成员变量，并在构造方法进行初始化。
    static class ViewHolder extends RecyclerView.ViewHolder{
        TextView tvName,tvAge,tvGrade,tvPhone;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            tvName=itemView.findViewById(R.id.tvItemName);
            tvAge=itemView.findViewById(R.id.tvItemAge);
            tvGrade=itemView.findViewById(R.id.tvItemGrade);
            tvPhone=itemView.findViewById(R.id.tvItemPhone);
        }
    }
//3、添加需要实现的接口方法。
//    6、在onCreateViewHolder()方法中，首先通过LayoutInflater获取列表项布局文件对象，
//    然后创建ViewHolder对象，最后返回该对象。
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_rv_main_student,parent,false);
        return new ViewHolder(view);
    }
//    7、在onBindViewHolder()方法中，通过positiong获取数据，然后赋值给控件。
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Student student=list.get(position);//获取Student对象
        holder.tvName.setText(student.getName());//将Student的各数据赋值给列表控件
        holder.tvAge.setText(String.valueOf(student.getAge()));
        holder.tvGrade.setText(student.getGrade());
        holder.tvPhone.setText(student.getPhone());

    }
//  5、重写getItemCount()方法，用于获得数据的长度
    @Override
    public int getItemCount() {
        return list.size();
    }
}
